import axios from 'axios';
import { ElMessage } from 'element-plus';
import router from "./router";

const axiosInstance = axios.create({
    baseURL: '/api',
    timeout: 5000,
});

// 请求拦截器
axiosInstance.interceptors.request.use(
    config => {
        const authorization = localStorage.getItem('Authorization');
        if (config.url.includes('/login')) {
            // 如果是登录请求，不检查 Authorization，直接放行
            return config;
        }
        if (authorization) {
            config.headers['Authorization'] = authorization;
        } else {
            if (router) {
                ElMessage.error('未登录或登录已失效，请重新登录');
                router.push('/login');
            }
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截器
axiosInstance.interceptors.response.use(
    response => {
        return response;
    },
    error => {
        if (error.response && error.response.status === 401) {
            // 处理 401 错误
            ElMessage.error('未登录或登录已失效，请重新登录');
            if (router) {
                router.push('/login');
            }
            return Promise.reject(error);
        } else {
            // 其他错误，不显示错误信息，直接拒绝 Promise
            return Promise.reject(error);
        }
    }
);

export default axiosInstance;
